package com.qianfeng.dbsm.service;

import com.qianfeng.dbsm.entity.TbOrder;
import com.qianfeng.dbsm.vo.GenerateOrderVo;
import com.qianfeng.dbsm.vo.OrderQueryParamVo;
import com.qianfeng.dbsm.vo.OrderVo;

import java.util.List;

/**
 * (TbOrder)表服务接口
 *
 * @author Chance
 * @since 2022-11-14 14:34:00
 */
public interface TbOrderService {

    /**
     * 创建订单 返回生成的订单编号 通过购物车提交的
     * @param cardIds
     * @return
     */
    String generateOrderByCart(String cardIds);

    /**
     * 创建订单 返回生成的订单编号 购买页直接下单
     * @param generateOrderVo
     * @return
     */
    String generateOrderByNoCart(GenerateOrderVo generateOrderVo);

    /**
     * 生成订单编号方法
     * @return
     */
    String generateOrderNumber();

    /**
     * 查询当前用户下所有订单信息
     * @param memberId
     * @return
     */
    List<OrderVo> queryOrderInfoByMemberId(String memberId,String orderState,String page,String pageSize);

    /**
     * 更新订单信息
     * @param orderNumber
     * @return
     */
    int updateOrderInfo(String orderNumber,Integer orderState);

    /**
     * 条件查询订单列表（用于后台订单管理）
     * @param queryParamVo
     * @return
     */
    List<OrderVo> queryOrderInfoByParam(OrderQueryParamVo queryParamVo);

    /**
     * 用户点击确认收货操作 完成订单
     * @param orderNumber
     * @return
     */
    boolean confirmOrderCompleted(String orderNumber);

    /**
     * 通过订单编号查询订单信息
     * @param orderNumber
     * @return
     */
    TbOrder queryByOrderNumber(String orderNumber);


    /**
     * 订单支付
     * @param orderNumber
     * @param payType
     * @return
     */
    boolean gotoPay(String orderNumber,String payType);


}
